import config from '@/utils/config.js'

let timeout = 80000
const baseUrl = config.baseUrl
const token = uni.getStorageSync('token')

export default (params) => {
	let url = params.url
	let method = params.method || "get"
	let data = params.data || {}
	let header = {
		'Content-Type': 'application/json;charset=UTF-8',
		'Authorization': uni.getStorageSync('token'),
		...params.header
	}
	if (method == "post") {
		header = {
			'Content-Type': 'application/json',
			'Authorization': uni.getStorageSync('token'),
			...params.header
		};
	}
	
	let isLoading = params.isLoading || false
	
	return new Promise((resolve, reject) => {
		if (isLoading) {
			uni.showLoading({
				title: '加载中',
				mask: true
			})
		}
		uni.request({
			url: baseUrl + url,
			method: method,
			header: header,
			data: data,
			timeout,
			success(res) {
				if (res.data.code === 200) {
					resolve(res.data)
				} else if([410000, 410001, 410002, 401].indexOf(res.data.code) !== -1){
					uni.navigateTo({
						url: '/pages/login/login'
					})
				} else {
					reject(res.data.msg || '系统错误')
				}
				
				// if (res.statusCode == 200) {
				// 	resolve(res.data)
				// } else {
				// 	uni.clearStorageSync()
				// 	switch (res.statusCode) {
				// 		case 401:
				// 			uni.showModal({
				// 				title: '提示',
				// 				content: '请登录',
				// 				showCancel: false,
				// 				success() {
				// 					setTimeout(() => {
				// 						uni.navigateTo({
				// 							url: '/pages/login/login'
				// 						})
				// 					}, 1000)
				// 				}
				// 			})
				// 			break
				// 		case 404: 
				// 			uni.showToast({
				// 				title: '请求地址不存在',
				// 				icon: 'none',
				// 				duration: 2000
				// 			})
				// 			break
				// 		default:
				// 			uni.showToast({
				// 				title: '请重试',
				// 				icon: 'node',
				// 				duration: 2000,
				// 			})
				// 			break
				// 	}
				// }
			},
			fail(err) {
				if (err.errMsg.indexOf('request:fail') !== -1) {
					uni.showToast({
						title: '网络异常',
						icon: 'error',
						duration: 2000
					})
				} else {
					uni.showToast({
						title: '未知异常',
						icon: 'none',
						duration: 2000
					})
				}
				reject(err)
			},
			complete() {
				uni.hideLoading()
				uni.hideToast()
			}
		})
	}).catch(() => {})
}